package com.ruoyi.system.V2.gameAttr.service;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.system.interAttr.domain.*;
import com.ruoyi.system.model.domain.GameAttrTemplate;
import com.ruoyi.system.model.domain.GameAttribute;

import java.util.List;
import java.util.Map;

/**
 * 游戏自定义属性对应模板Service接口
 *
 * @author ruoyi
 * @date 2023-04-04
 */
public interface IGameAttrTemplateService {
    /**
     * 查询游戏自定义属性对应模板
     *
     * @param id 游戏自定义属性对应模板主键
     * @return 游戏自定义属性对应模板
     */
    public GameAttrTemplate selectGameAttrTemplateById(Long id);

    /**
     * 查询游戏自定义属性对应模板列表
     *
     * @param gameAttrTemplate 游戏自定义属性对应模板
     * @return 游戏自定义属性对应模板集合
     */
    public List<GameAttrTemplate> selectGameAttrTemplateList(GameAttrTemplate gameAttrTemplate);

    /**
     * 新增游戏自定义属性对应模板
     *
     * @param gameAttrTemplate 游戏自定义属性对应模板
     * @return 结果
     */
    public int insertGameAttrTemplate(GameAttrTemplate gameAttrTemplate);

    /**
     * 修改游戏自定义属性对应模板
     *
     * @param gameAttrTemplate 游戏自定义属性对应模板
     * @return 结果
     */
    public int updateGameAttrTemplate(GameAttrTemplate gameAttrTemplate);

    /**
     * 批量删除游戏自定义属性对应模板
     *
     * @param ids 需要删除的游戏自定义属性对应模板主键集合
     * @return 结果
     */
    public int deleteGameAttrTemplateByIds(Long[] ids);

    /**
     * 删除游戏自定义属性对应模板信息
     *
     * @param id 游戏自定义属性对应模板主键
     * @return 结果
     */
    public int deleteGameAttrTemplateById(Long id);


    public List<GameAttrTemplate> selectGameAttrTemplateByGameIdAndAuto(Long gameId, List<String> auto);

    public List<GameAttrTemplate> selectGameAttrTemplateByGameId(Long gameId);

    List<GameAttrTemplate> yuduAttr(Long gameId, String type);
    List<GameAttribute> yuduCheckAttr(Long gameId, String type);

    List<InterAttrRes> interAttr(String gameId, String type, String config);
    List<InterAttrRes> interCheckAttr(String gameId, String type, String config);

    List<GamesRes> interGame(String config);

    List<InterServerRes> interServers(String config, String gameId);

    List<GameAttribute> yuduServe(Long gameId);

    void mateGame(Map<String, Object> params);

    void mateServe(JSONObject object);

    void mateRadio(JSONObject object);

    void mateCheckBox(JSONObject object);

    void mateInput(InterInputReq interInputReqr);
    void mateOther(JSONObject object);

    void updateInterAttr(InterAttr interAttr);

    JSONObject selectInfoByConfigIdAndGameId(Long gameId ,String config,String type);
}
